home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / et / et-2_2.lha / et2.2 / src / VObjectText.h < prev    next >
C/C++ Source or Header  |  1990-11-28  |  3KB  |  92 lines

  1. #ifndef VObjectText_First
  2. #ifdef __GNUG__
  3. #pragma once
  4. #endif
  5. #define VObjectText_First
  6.  
  7. #include "StyledText.h"
  8. #include "Mark.h"
  9.  
  10. const cVObjectChar  = '#'; // chararcter to mark a VObject
  11.  
  12. enum VobMarkFlags {
  13.     eVobInvalid     = eMarkLast + 1,
  14.     eVobMarkLast    = eMarkLast + 1
  15. };
  16.  
  17. //------ VObjectMark -----------------------------------------------------------
  18.  
  19. class VObjectMark: public Mark {
  20.     class VObject *gop;
  21. public:
  22.     MetaDef(VObjectMark);
  23.     
  24.     VObjectMark(int p= 0, int l= 0, VObject *go= 0, eMarkState s= eStateNone);
  25.     ~VObjectMark();
  26.  
  27.     VObject *GetVObject()
  28.     { return gop; }
  29.     void SetVObject(VObject *go)
  30.     { gop = go; }
  31.     void Invalidate()
  32.     { SetFlag(eVobInvalid); }
  33.     bool IsInvalidated()
  34.     { return TestFlag(eVobInvalid); }
  35.     void Validate()
  36.     { ResetFlag(eVobInvalid); }
  37.     ObjPtr DeepClone();
  38.     void FreeAll();
  39.     ostream &PrintOn(ostream &s); 
  40.     istream &ReadFrom(istream &s); 
  41.     void Parts(Collection *col);
  42. };
  43.  
  44. //------ VObjectText -----------------------------------------------------------
  45.  
  46. class VObjectText: public StyledText {                                                           
  47.     class MarkList *marks;
  48.     class TextView *tv;
  49.     void Init();
  50. public:
  51.     MetaDef(VObjectText);
  52.     
  53.     VObjectText();
  54.     VObjectText(int size, FontPtr fd= gSysFont);
  55.     VObjectText(byte *buf, int len = -1, bool ic = FALSE, FontPtr fd= gSysFont);
  56.     VObjectText(class TextRunArray *st, byte *buf, int len = -1, bool ic = FALSE);
  57.     ~VObjectText();
  58.     void InitNew();
  59.  
  60.     TextView *GetTextView();
  61.     void ReplaceWithStr(byte *str,int len = -1); 
  62.     void Cut(int from,int to);
  63.     void Paste(TextPtr t,int from,int to);
  64.     void Insert(byte c, int from,int to);
  65.     void Copy(Text* save,int from, int to);
  66.     TextPtr Save(int from, int to);
  67.  
  68.     class Command* InsertVObject(VObject *gop);
  69.     VObject *ContainsPoint(Point p);
  70.     VObject *MarkAt(int charNo);
  71.     VObjectMark *GetMarkAt(int charNo);
  72.     int FindPositionOfVObject(VObject *);   // -1 VObject not found
  73.     void SetView(class TextView*);
  74.     bool IsVObjectChar(int charNo)
  75.     { return (bool) ((*this)[charNo] == cVObjectChar); }
  76.     bool IsVObject(int charNo)
  77.     { return (bool) (IsVObjectChar(charNo) && MarkAt(charNo)); }
  78.     bool IsEscape (int at);
  79.     int CalcEscape (int at,LineDesc* = 0);
  80.     void DrawEscape (int at,Rectangle clip);
  81.     void VObjectChangedSize(VObject *);
  82.     Iterator *VObjectIterator();
  83.     int VObjectCount();
  84.     
  85.     //---- activation/passivation
  86.     ostream &PrintOn(ostream &s); 
  87.     istream &ReadFrom(istream &s); 
  88.     void Parts(Collection *c);
  89. };
  90.  
  91. #endif VObjectText_First
  92.